The present invention relates to electronic network systems, and more specifically to a loop network hub designed such that loop address conflicts are reduced by forcing initialization of the loop upon insertion of a new node port into the loop.
Electronic data systems are frequently interconnected using network communication systems. Area-wide networks and channels are two approaches that have been developed for computer network architectures. Traditional networks (e.g., LAN""s and WAN""s) offer a great deal of flexibility and relatively large distance capabilities. Channels, such as the Enterprise System Connection (ESCON) and the Small Computer System Interface (SCSI), have been developed for high performance and reliability. Channels typically use dedicated short-distance connections between computers or between computers and peripherals. Features of both channels and networks have been incorporated into a new network standard known as xe2x80x9cFibre Channelxe2x80x9d. Fibre Channel systems combine the speed and reliability of channels with the flexibility and connectivity of networks. Fibre Channel products currently can run at very high data rates, such as 266 Mbps or 1062 Mbps. These speeds are sufficient to handle quite demanding applications, such as uncompressed, full motion, high-quality video. ANSI specifications, such as X3.230-1994 , define the Fibre Channel network. This specification distributes Fibre Channel functions among five layers. The five functional layers of the Fibre Channel are: FC-0xe2x80x94the physical media layer; FC-1xe2x80x94the coding and encoding layer; FC-2xe2x80x94the actual transport mechanism, including the framing protocol and flow control between nodes; FC-3xe2x80x94the common services layer; and FC-4xe2x80x94the upper layer protocol. There are generally three ways to deploy a Fibre Channel network: simple point-to-point connections; arbitrated loops; and switched fabrics. The simplest topology is the point-to-point configuration, which simply connects any two Fibre Channel systems directly. Arbitrated loops are Fibre Channel ring connections that provide shared access to bandwidth via arbitration. Switched Fibre Channel networks, called xe2x80x9cfabricsxe2x80x9d, are a form of cross-point switching.
Conventional Fibre Channel Arbitrated Loop (xe2x80x9cFC-ALxe2x80x9d) protocols provide for loop functionality in the interconnection of devices or loop segments through node ports. However, direct interconnection of node ports is problematic in that a failure at one node port in a loop typically causes the failure of the entire loop. This difficulty is overcome in conventional Fibre Channel technology through the use of hubs. Hubs include a number of hub ports interconnected in a loop topology. Node ports are connected to hub ports, forming a star topology with the hub at the center. Hub ports which are not connected to node ports or which are connected to failed node ports are bypassed. In this way, the loop is maintained despite removal or failure of node ports.
More particularly, FIG. 1A illustrates a conventional loop configuration 100. Four node ports 101, 102, 104, 106 are shown joined together node port to node port. Each node port represents a connection to a device or to another loop. Node port 101 is connected to node port 102 such that data is transmitted from node port 101 to node port 102. Node port 102 is in turn connected to node port 104 which is in turn connected to node port 106. Node port 106 is connected to the first node port, node port 101. In this manner, a loop datapath is established; from node port 100 to node port 102 to node port 104 to node port 106 back to node port 100.
FIG. 1B illustrates a loop 107 where node ports 108, 110, 112, 114 are organized in a physical star topology with a hub 116 in the center. Node port 108 is connected to a hub port 118 in hub 116 as are node ports 110, 112 and 114 to their own respective hub ports 120, 122, and 124. Internal to hub 116 is a loop, where hub ports 118-124 of hub 116 form a loop datapath similar to the conventional loop configuration shown in FIG. 1A.
The use of a hub as a central component to a loop network allows for operation when one or more hub ports are not connected to node ports, or one or more hub ports are connected to node ports which have failed, by bypassing such hub ports. Each hub port typically contains circuitry which provides a bypass mode for the hub port. When a hub port is in bypass mode, data received by the hub port from the previous hub port in the loop is passed directly to the next hub port in the loop.
An additional advantage of the use of hubs is that node ports may be hot insertable. Hot insertable functionality allows the insertion and removal of node ports from a loop without powering down the entire loop or the hub and then restarting again. However, as a result of this hot insertability, the addresses of node ports attached to a loop are not always properly maintained.
Under FC-AL protocols, a loop initialization process is used to provide each node port attached to the loop with a unique address, referred to as an Arbitrated Loop Physical Address (xe2x80x9cAL_PAxe2x80x9d). Loop initialization is invoked under FC-AL protocols by generating a sequence of Loop Initialization Primitive (xe2x80x9cLIPxe2x80x9d) ordered sets. In a loop which is not hot insertable, after insertion or removal of a node port the entire loop is restarted and re-initialized. In a hot insertable loop, the loop is not always restarted and so is not necessarily re-initialized upon each insert or removal. As a result, when a new node port is inserted into the loop a unique address may not necessarily be generated if the loop is not re-initialized.
In addition, a hub port may be connected to a hub port on another hub. When hubs are linked one hub to another through hub ports, sometimes hubs do not properly initiate an initialization routine upon insertion, especially in the case of quiescent hubs (i.e., no loop traffic at the time of insertion). At this point there is a possibility of address conflicts between the node ports on the first hub and the node ports on the second hub.
Such an address conflict problem is illustrated in FIGS. 2A and 2B. As shown in FIG. 2A, four node ports A1, B1, C1, D1, are linked to a hub 200. Three node ports A2, B2, C2, are connected to a hub 202. The numbers 1 and 2 are illustrative only and in fact the addresses for each node port are still represented by the letter A, B, C, or D. At this point, each node port has a unique address within its own loop. However, when hubs 200 and 202 are joined, as shown in FIG. 2B, the addresses for the node ports are no longer necessarily unique. In the single loop shown in FIG. 2B, two node ports have address A, two node ports have address B, and two node ports have address C. Upon detecting an address conflict, an error is generated which starts an initialization sequence, ultimately resulting in unique addresses for each node port. However, before that conflict is detected, messages may still continue to pass which are received by incorrect node ports resulting in possible data corruption.
For example, in the situation shown in FIG. 2A, when node port B1 sends data to node port A1, the hub ports are adjacent and node port A1 receives the data from node port B1 possibly without an error. As shown in FIG. 2B, the connection from node port B1 to node port A1 may begin without generating an address conflict because messages from B1 successfully pass along the loop to node port A1, the intended destination, as long as node port B2 was not arbitrating.
However, when node port A1 attempts to send data to node port B1, data corruption may result. In the situation shown in FIG. 2A, the data is sent from node port A1, past node port C1, past node port D1, and then to node port B1, the intended destination. However, in the situation shown in FIG. 2B, data passes from node port A1, past node port C1, past node port D1, through the hub ports connecting hub 200 and hub 202, past node port C2 and is received by node port B2. As noted above, the numerals indicate only the difference between node ports from hub 200 and node ports from hub 202. From node port A1""s perspective, node port B2 is indistinguishable from node port B1. Node port A1 sends data addressed to node port B. Similarly, node port B2 accepts data which is addressed to node port B. Accordingly, node port B2 receives data addressed to node port B, though node port A1 intended the data to be received by node port B1. Thus, xe2x80x9cBxe2x80x9d is not a unique address. Neither node port A1 nor node port B2 is aware of the existence of either node port B2 or node port A1. As a result, depending on the nature of the transaction entered into, data corruption may result. At some point, a proper error may be generated resulting in the initialization sequence. That may be too late, however, to prevent or recover from unwanted data corruption.
The inventors have determined that it would be desirable to provide a loop network hub which can provide unique addresses upon insertion of a new node port or a new hub into a loop by forcing the loop to initialize before data corruption occurs.
A loop network hub of the preferred embodiment includes a hub port with a loop initialization insertion mechanism. The loop initialization insertion mechanism causes a hub port which detects a new connection to automatically begin generating loop initialization data. A hub port continues to generate loop initialization data until that hub port receives a loop initialization sequence. The loop initialization data propagates around the loop of the hub, halting ordinary processing. In this way, the entire loop is cleared. Upon receiving a loop initialization sequence, the hub port originating the loop initialization data stops sending the loop initialization data and inserts the new node port into the loop. At this point, loop initialization begins and each node port in the loop network obtains a unique loop network address.
In an FC-AL implementation, a hub of the preferred embodiment includes a hub port with a LIP insertion mechanism. The loop initialization insertion mechanism causes a hub port which detects a new connection to automatically begin generating LIP (F7, F7) ordered sets. The hub port continues to generate LIP (F7, F7) ordered sets until that hub port receives a LIP primitive sequence, where a LIP primitive sequence includes three consecutive identical LIP ordered sets. The LIP (F7, F7) ordered sets propagate around the loop of the hub, halting ordinary processing. In this way, the entire loop is cleared. Upon receiving a LIP primitive sequence, the hub port originating the LIP (F7, F7) ordered sets stops inserting LIP (F7, F7) ordered sets and inserts the new node port into the loop. At this point, loop initialization begins and each node port obtains, according to known FC-AL protocols, a unique physical address (an Arbitrated Loop Physical Address, xe2x80x9cAL_PAxe2x80x9d).